Spread for Winforms 表格控件:实现交叉报表

Spread 表格控件在业内以强大的 Excel 兼容性著称,并且广泛应用于制作报表。在日常工作中,经常需要使用 excel 制作交叉报表,Excel 交叉报表的左上角单元格斜线通过 Excel 单元格斜边框制作。那么,在Spread中是否可以实现这样的效果呢?在篇文章中,我们将阐述如何在 Spread 中添加斜线实现交叉报表中的表头效果。

发布于 2013/09/08 00:00

SpreadJS

Spread 表格控件在业内以强大的 Excel 兼容性著称,并且广泛应用于制作报表。在日常工作中,经常需要使用 excel 制作交叉报表,Excel 交叉报表的左上角单元格斜线通过 Excel 单元格斜边框制作。那么,在Spread中是否可以实现这样的效果呢?在篇文章中,我们将阐述如何在 Spread 中添加斜线实现交叉报表中的表头效果。

Spread 边框虽然没有斜线边框,但是 Spread 提供了丰富的图形功能,不仅可以组织UI布局同时也支持打印、导出到 excel 。在本篇文章中我们将使用 LineShape 模拟该效果。

1.向 Spread 中添加 LineShape 的方法如下:

  1: FarPoint.Win.Spread.DrawingSpace.LineShape lShape =
 new FarPoint.Win.Spread.DrawingSpace.LineShape();
  2: lShape.Name = "line";
  3: lShape.Top = 0;
  4: lShape.Left = 0;
  5: lShape.Thickness = 5;
  6: lShape.ShapeOutlineColor = Color.Red;
  7: this.fpSpread1.Sheets[0].AddShape(lShape);

 

效果如下:

image

2.通过计算单元格的长度和宽度来计算 LineShape 的起始位置和角度:

  1: private Rectangle CaculateRectangle(int startRowIndex, int startColIndex
, int endRowIndex, int endColIndex)
  2: {
  3:     float height = 0;
  4:     float width = 0;
  5:     for (int i = startRowIndex; i <= endRowIndex; i++)
  6:     {
  7:         height += this.fpSpread1.Sheets[0].Rows[i].Height;
  8:     }
  9: 
 10:     for (int i = startColIndex; i <= endColIndex; i++)
 11:     {
 12:         width += this.fpSpread1.Sheets[0].Columns[i].Width;
 13:     }
 14:     Rectangle cellRec = this.fpSpread1.GetCellRectangle(0, 0, startRowIndex, startColIndex);
 15:     Point startPositoin = new Point(cellRec.Left - (int)this.fpSpread1.Sheets[0].SheetCorner
.Columns[0].Width, cellRec.Top - (int)this.fpSpread1.Sheets[0].SheetCorner.Rows[0].Height);
 16: 
 17:     Rectangle rec = new Rectangle(startPositoin, new Size((int)width, (int)height));
 18: 
 19:     return rec;
 20: }

 

3.通过设置 SetBounds 方法设置 LineShape 位置信息:

  1: FarPoint.Win.Spread.DrawingSpace.LineShape line = 
new FarPoint.Win.Spread.DrawingSpace.LineShape();
  2: line.Name = "mark";
  3: line.ShapeOutlineColor = Color.Gray;
  4: line.Width = 2;
  5: line.Location = new Point(0, 0);
  6: 
  7: Rectangle rec = CaculateRectangle(0, 0, 2, 1);
  8: line.SetBounds(rec);

 

以上即为设置的核心代码。使用以上方法即可实现以下效果:

image

隐藏表头及设置边框后可实现以下效果:

image

Demo 下载:VS2010 && Spread for Winforms 7.0 && .NET 4.0 && C# 点击下载

SpreadJS | 下载试用

纯前端表格控件SpreadJS,兼容 450 种以上的 Excel 公式,具备“高性能、跨平台、与 Excel 高度兼容”的产品特性,备受华为、苏宁易购、天弘基金等行业龙头企业的青睐,并被中国软件行业协会认定为“中国优秀软件产品”。SpreadJS 可为用户提供类 Excel 的功能,满足表格文档协同编辑、 数据填报、 类 Excel 报表设计等业务场景需求,极大的降低企业研发成本和项目交付风险。

如下资源列表,可以为您评估产品提供帮助:

相关产品
推荐相关案例
推荐相关资源
关注微信
葡萄城社区二维码

关注“葡萄城社区”

活字格低代码二维码

关注“活字格低代码”

想了解更多信息,请联系我们, 随时掌握技术资源和产品动态